home *** CD-ROM | disk | FTP | other *** search
-
- /*© Copyright 1988-1992 UserLand Software, Inc. All Rights Reserved.*/
-
-
- #include "appletdefs.h"
- #include "appletstrings.h"
- #include "appletfont.h"
-
-
- #define styleseparator "\p+"
-
- FontInfo globalfontinfo;
-
- #define ctstyles 7
-
- short stylesarray [ctstyles] =
-
- {0, bold, italic, underline,
-
- bold + italic, bold + underline,
-
- italic + underline};
-
-
-
-
- void setfontsizestyle (short fontnum, short fontsize, short fontstyle) {
-
- TextFont (fontnum);
-
- TextSize (fontsize);
-
- TextFace (fontstyle);
- } /*setfontsizestyle*/
-
-
- void setglobalfontsizestyle (short fontnum, short fontsize, short fontstyle) {
-
- setfontsizestyle (fontnum, fontsize, fontstyle);
-
- GetFontInfo (&globalfontinfo);
- } /*setglobalfontsizestyle*/
-
-
- short setnamedfont (bigstring bs, short fsize, short fstyle, short defaultfont) {
-
- /*
- give me the name of a font you like. I'll try to set to that font,
- but if its not available, you get the default font. be sure to select
- a default font that is mandatory -- like geneva or newYork.
- */
-
- short fontnum;
-
- GetFNum (bs, &fontnum);
-
- if (fontnum == 0)
- fontnum = defaultfont; /*use caller's second choice*/
-
- setglobalfontsizestyle (fontnum, fsize, fstyle);
-
- return (fontnum); /*return the font that we are actually using*/
- } /*setnamedfont*/
-
-
- void getfontsizestyle (short *fontnum, short *fontsize, short *fontstyle) {
-
- *fontnum = (*quickdrawglobal (thePort)).txFont;
-
- *fontsize = (*quickdrawglobal (thePort)).txSize;
-
- *fontstyle = (*quickdrawglobal (thePort)).txFace;
- } /*getfontsizestyle*/
-
-
- void getstyle (short style, short *flplain, short *flbold, short *flitalic, short *flunderline, short *floutline, short *flshadow) {
-
- /*
- give me a style bit array, and I'll extract the booleans which are
- slightly easier to deal with.
-
- if none of the others are true, we set flplain to true. otherwise
- flplain is false.
- */
-
- *flplain = true; /*default values*/
-
- *flbold = false;
-
- *flitalic = false;
-
- *flunderline = false;
-
- *floutline = false;
-
- *flshadow = false;
-
- if (style >= shadow) {
-
- style -= shadow;
-
- *flshadow = true;
-
- *flplain = false;
- }
-
- if (style >= outline) {
-
- style -= outline;
-
- *floutline = true;
-
- *flplain = false;
- }
-
- if (style >= underline) {
-
- style -= underline;
-
- *flunderline = true;
-
- *flplain = false;
- }
-
- if (style >= italic) {
-
- style -= italic;
-
- *flitalic = true;
-
- *flplain = false;
- }
-
- if (style >= bold) {
-
- style -= bold;
-
- *flbold = true;
-
- *flplain = false;
- }
- } /*getstyle*/
-
-
- void checkstyle (boolean fl, bigstring bsin, bigstring bsout) {
-
- if (fl) {
- if (bsout [0]) { /*already something on the output string*/
-
- pushstring (styleseparator, bsout);
-
- pushstring (bsin, bsout);
- }
- else
- copystring (bsin, bsout);
- }
- } /*checkstyle*/
-
-
- short getfontheight (void) {
-
- FontInfo info;
-
- GetFontInfo (&info);
-
- return (info.ascent + info.descent);
- } /*getfontheight*/
-
-
- void fontgetname (short fontnum, bigstring fontname) {
-
- GetFontName (fontnum, fontname);
- } /*fontgetname*/
-
-
- void fontgetnumber (bigstring fontname, short *fontnum) {
-
- if (stringlength (fontname) == 0)
- *fontnum = geneva;
- else
- GetFNum ((ptrstring) fontname, fontnum);
- } /*fontgetnumber*/
-
-
- void diskgetfontname (short fontnum, diskfontstring fontname) {
-
- /*
- Apple recommends that fonts be stored on disk as strings. we return the
- fontname, limited in length to 32, based on the indicated font number.
- */
-
- bigstring bs;
-
- GetFontName (fontnum, bs);
-
- if (stringlength (bs) > diskfontnamelength)
- setstringlength (bs, diskfontnamelength);
-
- copystring (bs, (ptrstring) fontname);
- } /*diskgetfontname*/
-
-
- void diskgetfontnum (diskfontstring fontname, short *fontnum) {
-
- if (stringlength (fontname) == 0)
- *fontnum = geneva;
- else
- GetFNum ((ptrstring) fontname, fontnum);
- } /*diskgetfontnum*/
-
-
- void getnextfont (short *fontnum) {
-
- /*
- register MenuHandle hmenu = hdlfontmenu;
- register short i, ctitems;
- bigstring fontname, bs;
-
- GetFontName (*fontnum, fontname);
-
- ctitems = CountMItems (hmenu);
-
- for (i = 1; i <= ctitems; i++) {
-
- GetItem (hmenu, i, bs);
-
- if (unicaseequalstrings (bs, fontname)) {
-
- if (i == ctitems)
- GetItem (hmenu, 1, fontname);
- else
- GetItem (hmenu, i + 1, fontname);
-
- GetFNum (fontname, fontnum);
-
- return;
- }
- } /%for%/
-
- *fontnum = applFont; /%the input font isn't on this system%/
- */
- } /*getnextfont*/
-
-
- void getprevfont (short *fontnum) {
-
- /*
- register MenuHandle hmenu = hdlfontmenu;
- register short i, ctitems;
- bigstring fontname, bs;
-
- GetFontName (*fontnum, fontname);
-
- ctitems = CountMItems (hmenu);
-
- for (i = 1; i <= ctitems; i++) {
-
- GetItem (hmenu, i, bs);
-
- if (unicaseequalstrings (bs, fontname)) {
-
- if (i == 1)
- GetItem (hmenu, ctitems, fontname);
- else
- GetItem (hmenu, i - 1, fontname);
-
- GetFNum (fontname, fontnum);
-
- return;
- }
- } /%for%/
-
- *fontnum = applFont; /%the input font isn't on this system%/
- */
- } /*getprevfont*/
-
-
- void getnextstyle (short *style) {
-
- register short i;
-
- for (i = 0; i < ctstyles; i++) {
-
- if (*style == stylesarray [i]) {
-
- if (i == (ctstyles - 1))
- *style = stylesarray [0];
- else
- *style = stylesarray [i + 1];
-
- return;
- }
- } /*for*/
-
- *style = stylesarray [0];
- } /*getnextstyle*/
-
-
- void getprevstyle (short *style) {
-
- register short i;
-
- for (i = 0; i < ctstyles; i++) {
-
- if (*style == stylesarray [i]) {
-
- if (i == 0)
- *style = stylesarray [ctstyles - 1];
- else
- *style = stylesarray [i - 1];
-
- return;
- }
- } /*for*/
-
- *style = stylesarray [0];
- } /*getprevstyle*/
-
-
-